package datastructure.book.dp._1_pathway.exercise.second;

import org.junit.jupiter.api.Test;

public class _5_Solution {

    @Test
    public void test(){
        int[][] matrix = {
                {2,1,3},
                {6,5,4},
                {7,8,9}
        };
        System.out.println(minFallingPathSum(matrix));
    }
    /**
     * 给你一个 n x n 的 方形 整数数组matrix ，请你找出并返回通过 matrix 的下降路径 的 最小和 。
     * 下降路径 可以从第一行中的任何元素开始，并从每一行中选择一个元素。
     * 在下一行选择的元素和当前行所选元素最多相隔一列（即位于正下方或者沿对角线向左或者向右的第一个元素）。
     * 具体来说，位置 (row, col) 的下一个元素应当是 (row + 1, col - 1)、(row + 1, col) 或者 (row + 1, col + 1) 。
     * n == matrix.length == matrix[i].length
     * 1 <= n <= 100
     * -100 <= matrix[i][j] <= 100
     * 例如：
     * [2,1,3],
     * [6,5,4],
     * [7,8,9]
     * 自顶向下的最小路径和为 13（即，1 + 5 + 7 = 13，1+4+8=13）。
     */
    public int minFallingPathSum(int[][] matrix) {
        return 0;
    }

    private int min(int i,int j,int k){
        return Math.min(Math.min(i,j),k);
    }

    private int arrMinNum(int[] arr){
        int result = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] < result) {
                result = arr[i];
            }
        }
        return result;
    }
}
